package com.adam.test.service;

import org.springframework.transaction.annotation.Propagation;

/**
 * 传播行为测试-添加接口
 * @param <E> 实体类型
 * 
 * @author jiangwh
 */
public interface IPropagationSelectService<E> {

    /**
     * 不使用事务查询
     * @param id
     * @return
     */
    E get(Integer id);

    /**
     * 使用{@link Propagation#REQUIRED}查询
     * @param id
     * @return
     */
    E getRequired(Integer id);

    /**
     * 使用{@link Propagation#REQUIRES_NEW}查询
     * @param id
     * @return
     */
    E getRequiresNew(Integer id);

    /**
     * 使用{@link Propagation#NESTED}查询
     * @param id
     * @return
     */
    E getNested(Integer id);

    /**
     * 使用{@link Propagation#SUPPORTS}查询
     * @param id
     * @return
     */
    E getSupports(Integer id);

    /**
     * 使用{@link Propagation#MANDATORY}查询
     * @param id
     * @return
     */
    E getMandatory(Integer id);

    /**
     * 使用{@link Propagation#NOT_SUPPORTED}查询
     * @param id
     * @return
     */
    E getNotSupported(Integer id);

    /**
     * 使用{@link Propagation#NEVER}查询
     * @param id
     * @return
     */
    E getNever(Integer id);
    
}
